package model

import (
	"gorm.io/gorm"
	"time"
)

type Room struct {
	Id        uint           `gorm:"column:id;type:bigint(20) UNSIGNED;primaryKey;not null;" json:"id"`
	UserId    uint           `gorm:"column:user_id;type:bigint(20) UNSIGNED;comment:创建群用户;not null;" json:"user_id"`                           // 创建群用户
	Name      string         `gorm:"column:name;type:varchar(255);comment:群名称;not null;" json:"name"`                                          // 群名称
	CreatedAt time.Time      `gorm:"column:created_at;type:datetime(3);comment:创建时间;not null;default:CURRENT_TIMESTAMP(3);" json:"created_at"` // 创建时间
	UpdatedAt time.Time      `gorm:"column:updated_at;type:datetime(3);comment:修改时间;not null;default:CURRENT_TIMESTAMP(3);" json:"updated_at"` // 修改时间
	DeletedAt gorm.DeletedAt `gorm:"column:deleted_at;type:datetime(3);comment:删除时间;default:NULL;" json:"deleted_at"`                          // 删除时间
}
type RoomRecord struct {
	Id         uint      `gorm:"column:id;type:bigint(20) UNSIGNED;primaryKey;not null;" json:"id"`
	RoomId     uint      `gorm:"column:room_id;type:bigint(20) UNSIGNED;comment:群id;not null;" json:"room_id"`                             // 群id
	RoomUserId uint      `gorm:"column:room_user_id;type:bigint(20) UNSIGNED;comment:群成员id;not null;" json:"room_user_id"`                 // 群成员id
	Counten    string    `gorm:"column:counten;type:varchar(255);comment:内容;not null;" json:"counten"`                                     // 内容
	CreatedAt  time.Time `gorm:"column:created_at;type:datetime(3);comment:创建时间;not null;default:CURRENT_TIMESTAMP(3);" json:"created_at"` // 创建时间
	UpdatedAt  time.Time `gorm:"column:updated_at;type:datetime(3);comment:修改时间;not null;default:CURRENT_TIMESTAMP(3);" json:"updated_at"` // 修改时间
}
type RoomUser struct {
	Id        uint           `gorm:"column:id;type:bigint(20) UNSIGNED;primaryKey;not null;" json:"id"`
	UserId    uint           `gorm:"column:user_id;type:bigint(20) UNSIGNED;comment:群成员id;not null;" json:"user_id"`                           // 群成员id
	RoomId    uint           `gorm:"column:room_id;type:bigint(20) UNSIGNED;comment:群id;not null;" json:"room_id"`                             // 群id
	Type      uint           `gorm:"column:type;type:int(10) UNSIGNED;comment:权限1群主2群管理员3群成员;not null;default:3;" json:"type"`                 // 权限1群主2群管理员3群成员
	Describe  string         `gorm:"column:describe;type:varchar(255);comment:描述;not null;" json:"describe"`                                   // 描述
	CreatedAt time.Time      `gorm:"column:created_at;type:datetime(3);comment:创建时间;not null;default:CURRENT_TIMESTAMP(3);" json:"created_at"` // 创建时间
	UpdatedAt time.Time      `gorm:"column:updated_at;type:datetime(3);comment:修改时间;not null;default:CURRENT_TIMESTAMP(3);" json:"updated_at"` // 修改时间
	DeletedAt gorm.DeletedAt `gorm:"column:deleted_at;type:datetime(3);comment:删除时间;default:NULL;" json:"deleted_at"`                          // 删除时间
}

func (Room) TableName() string {
	return "room"
}

func (RoomRecord) TableName() string {
	return "room_record"
}

func (RoomUser) TableName() string {
	return "room_user"
}
